Luis Berrospi (lider)
Bryan Castillo
Luis Robledo
Jorge Collazos
Nincol Quiroz
Son muchas las personas que se dedican profesionalmente a programar en todo el mundo. Sin embargo, las características de estas y el contexto en el que viven no son iguales. Tenemos la hipótesis de que el lugar de procedencia influye bastante en la situación tanto laboral como educativa de los programadores profesionales, por lo que decidimos realizar este análisis concentrándonos en lugares bastante distintos en desarrollo respecta, Latino América y Estados Unidos. Este estudio es importante porque lograremos observar si es que realmente existen estas diferencias. Además, si las hay, podremos identificar donde es que se encuentran para poder sugerir que es lo que una región esta haciendo mejor o peor que la otra y se pueda encontrar una solución al verdadero problema.
Queremos responder las siguientes preguntas:
¿Existen diferencias en el aspecto educativo y laboral entre programadores profesionales de América Latina y de Estados Unidos?
¿Cual es el nivel de estas diferencias?¿Cuales son las más pronunciadas?
¿Que variables no varían entre regiones?
Población objetivo
Unidades muestrales
Base de Datos
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
##
## -- Column specification --------------------------------------------------------
## cols(
## .default = col_character(),
## Respondent = col_double(),
## Age = col_double(),
## CompTotal = col_double(),
## ConvertedComp = col_double(),
## WorkWeekHrs = col_double()
## )
## i Use `spec()` for the full column specifications.
DFF <- select(df, MainBranch, Country,Gender,Age, YearsCode, YearsCodePro ,EdLevel,Employment, JobSat, OrgSize, WorkWeekHrs, NEWOvertime, NEWOnboardGood, JobSeek, NEWLearn, LanguageWorkedWith,PlatformWorkedWith)
DF_USA <- DFF[DFF$Country == "United States" & !is.na(DFF$Country) & DFF$MainBranch == "I am a developer by profession" & !is.na(DFF$MainBranch), ][3:17]
DF_LC <- cbind(region = as.character(countrycode(sourcevar = DFF$Country,
origin = "country.name",
destination = "region")), DFF)
DF_LC <- DF_LC[DF_LC$region == "Latin America & Caribbean" & !is.na(DF_LC$region) & DFF$MainBranch == "I am a developer by profession" & !is.na(DFF$MainBranch), ][, 4:18]
DF_MIX <- cbind(region = as.character(countrycode(sourcevar = DFF$Country,
origin = "country.name",
destination = "region")), DFF)
DF_MIX <- DF_MIX[((DF_MIX$region == "Latin America & Caribbean" & !is.na(DF_MIX$region)) | (DF_MIX$Country == "United States" & !is.na(DF_MIX$Country))) & DF_MIX$MainBranch == "I am a developer by profession" & !is.na(DF_MIX$MainBranch), ][, 3:18]
DF_MIX$Country[DF_MIX$Country != "United States"] <- "América Latina"
DF_MIX$Country[DF_MIX$Country == "United States"] <- "Estados Unidos"
colnames(DF_MIX)[which(names(DF_MIX) == "Country")] <- "Region"
DF_MIX
| Pregunta | Variable | Tipo de Variable |
|---|---|---|
| Which of the following describe you, if any? Please check all that apply. If you prefer not to answer, you may leave this question blank. | Genero | Nominal |
| What is your age (in years)? If you prefer not to answer, you may leave this question blank. | Edad | Discreta |
| Including any education, how many years have you been coding in total? | Años codeando | Discreta |
| NOT including education, how many years have you coded professionally (as a part of your work)? | Años codeando profesionalmente | Discreta |
| Which of the following best describes the highest level of formal education that you’ve completed? | Grado educativo | Jerárquica |
| Which of the following best describes your current employment status? | Tipo de empleo | Nominal |
| Which programming, scripting, and markup languages have you done extensive development work in over the past year, and which do you want to work in over the next year? (If you both worked with the language and want to continue to do so, please check both boxes in that row | Lenguajes con los que se trabajo | Nominal |
| How frequently do you learn a new language or framework? | Frecuencia de aprendizaje de un nuevo lenguaje/framework | Nominal |
| Which platforms have you done extensive development work in over the past year, and which do you want to work in over the next year? (If you both worked with the platform and want to continue to do so, please check both boxes in that row.) | Plataformas con las que se trabajo | Nominal |
| how often do you work overtime or beyond the formal time expectation of your job? | Frecuencia de horas extra | Nomina |
| Do you think your company has a good onboarding process? (By onboarding, we mean the structured process of getting you settled in to your new role at a company) | Proceso de incorporación | Nominal |
| Which of the following best describes your current job-seeking status? | Situación de empleo | Nominal |
| How satisfied are you with your current job? (If you work multiple jobs, answer for the one you spend the most hours on.) | Satisfacion laboral | Ordinal | | | |
| Approximately how many people are employed by the company or organization you currently work for? | Cantidad de empleados | Discreta | | | |
| On average, how many hours per week do you work? Please enter a whole number in the box. | Horas de trabajo semanales | Continua |
+———————————————————————————————————————————————————————————————————————————————————————————-+———————————————————-+—- ————-+
temp = DF_USA$Gender[!is.na(DF_USA$Gender)]
gender_vec_USA <- vector()
gender_vec_LC <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
gender_vec_USA <- c(gender_vec_USA, sub_pal)
}
}
temp = DF_LC$Gender[!is.na(DF_LC$Gender)]
gender_vec <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
gender_vec_LC <- c(gender_vec_LC, sub_pal)
}
}
layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE), heights=c(6, 1))
par(mai=rep(0.5, 4))
temp = table(gender_vec_USA)
man <- round(temp[1]/length(gender_vec_USA)*100,2)
other <- round(temp[2]/length(gender_vec_USA)*100,2)
woman <- round(temp[3]/length(gender_vec_USA)*100,2)
pie(table(gender_vec_USA), main = "Estados Unidos", labels = c(paste(man, "%", sep = ""), paste(other, "%", sep = ""), paste(woman, "%", sep = "")), col = c("skyblue","orange","red"))
temp = table(gender_vec_LC)
man <- round(temp[1]/length(gender_vec_LC)*100,2)
other <- round(temp[2]/length(gender_vec_LC)*100,2)
woman <- round(temp[3]/length(gender_vec_LC)*100,2)
pie(table(gender_vec_LC), main = "América Latina", labels = c(paste(man, "%", sep = ""), paste(other, "%", sep = ""), paste(woman, "%", sep = "")), col = c("skyblue","orange","red"))
par(mai=c(0,0,0,0))
plot.new()
legend(x="center", ncol=3,legend=c("Hombre","Otros","Mujer"),
fill=c("skyblue","orange","red"))
En el gráfico podemos ver como si bien, la proporción de mujeres que se dedican en Estados Unidos es el doble que la proporción en América Latina, en ambas regiones la brecha de genero es bastante grande lo que significa que la gran mayoría de los programadores profesionales son hombres
boxplot(DF_MIX$Age~DF_MIX$Region, na.rm= T, xlab = "Edad", ylab = "Region", notch=TRUE, horizontal = TRUE)
abline(v=mean(DF_USA$Age, na.rm = TRUE), col = "red", lwd=2)
abline(v=mean(DF_LC$Age, na.rm = TRUE), col = "blue",lwd=2)
legend(60,1.7,legend=c("media EEUU", "Media Latam"),col=c("red", "blue"),lwd=2)
Podemos observar que las edades de los programadores profesionales están más concentradas en América Latina comparando los rangos intercuartílicos:
IQR(DF_LC$Age, na.rm = TRUE)
## [1] 9
IQR(DF_USA$Age, na.rm = TRUE)
## [1] 12
Además, la edad promedio de los programadores profesionales de América Latina es de 30.14 mientras que el de Estados Unidos es de 34.33,
round(mean(DF_LC$Age, na.rm = TRUE), 2)
## [1] 30.15
round(mean(DF_USA$Age, na.rm = TRUE),2)
## [1] 34.33
Junto con las medianas y la forma de las cajas podemos sugerir que en general, si bien, la diferencia de las medianas son estadísticamente significativas, no es mucha diferencia de edad entre los programadores profesionales de ambos países
round(median(DF_LC$Age, na.rm = TRUE), 2)
## [1] 29
round(median(DF_USA$Age, na.rm = TRUE),2)
## [1] 32
boxplot(as.numeric(DF_MIX$YearsCode)~DF_MIX$Region, na.rm= TRUE, ylab = "Region", xlab = "Años Codeando", notch = TRUE, horizontal = TRUE)
abline(v=mean(as.numeric(DF_USA$YearsCode), na.rm = TRUE), col = "red")
abline(v=mean(as.numeric(DF_LC$YearsCode), na.rm = TRUE), col = "blue")
legend(25,1.7,legend=c("media EEUU", "media Latam"),col=c("red", "blue"),lwd=2)
En el diagrama de cajas y bigotes podemos ver como los programadores profesionales de Estados Unidos llevan mas años programando en total en comparación con los de América Latina. Sin embargo, esta diferencia es pequeña.
También, es importante destacar la gran diferencia de 6 años que existe entre el 3er cuartíl de ambas regiones. Esto implica que el 75% de los programadores profesionales de Estados Unidos cuentan a lo mucho con 22 años programando mientras que en América latina solo 16.
round(quantile(as.numeric(DF_LC$YearsCode), na.rm = TRUE), 2)
## 0% 25% 50% 75% 100%
## 1 7 10 16 50
round(quantile(as.numeric(DF_USA$YearsCode), na.rm = TRUE),2)
## 0% 25% 50% 75% 100%
## 1 8 14 22 50
boxplot(as.numeric(DF_MIX$YearsCodePro)~DF_MIX$Region, na.rm= TRUE, ylab = "Region", xlab = "Años Codeando Profesionalmente", notch = TRUE, horizontal = TRUE)
abline(v=mean(as.numeric(DF_USA$YearsCodePro), na.rm = TRUE), col = "red")
abline(v=mean(as.numeric(DF_LC$YearsCodePro), na.rm = TRUE), col = "blue")
legend(25,1.7,legend=c("media EEUU", "media Latam"),col=c("red", "blue"),lwd=2)
En este diagrama de cajas y bigotes se observa que los programadores de Estados Unidos tienen más años programando profesionalmente en total en comparación con los programadores de América Latina.
Existe una diferencia de 4 años en el 3er cuartil de ambas regiones; es decir, el 75% de los programadores estadounidenses cuentan a los mucho con 15 años programando profesionalmente y los latinoamericanos con 11 años.
También existe una diferencia de 1 año el 4to cuartil. Esto implica que del 100% de programadores latinoamericanos al menos uno tiene un año más programando profesionalmente que el 100% de programadores estadounidenses.
round(quantile(as.numeric(DF_LC$YearsCodePro), na.rm = TRUE), 2)
## 0% 25% 50% 75% 100%
## 1 3 6 11 50
round(quantile(as.numeric(DF_USA$YearsCodePro), na.rm = TRUE),2)
## 0% 25% 50% 75% 100%
## 1 4 8 15 49
tableUSA <- table(DF_USA$EdLevel)
tableUSA <- prop.table(tableUSA)
tableUSA
##
## Associate degree (A.A., A.S., etc.)
## 0.046552871
## Bachelor’s degree (B.A., B.S., B.Eng., etc.)
## 0.583351807
## I never completed any formal education
## 0.003990246
## Master’s degree (M.A., M.S., M.Eng., MBA, etc.)
## 0.190866770
## Other doctoral degree (Ph.D., Ed.D., etc.)
## 0.027710042
## Primary/elementary school
## 0.003214365
## Professional degree (JD, MD, etc.)
## 0.004211926
## Secondary school (e.g. American high school, German Realschule or Gymnasium, etc.)
## 0.023941476
## Some college/university study without earning a degree
## 0.116160497
names <- c("GA", "L", "NCE", "M", "OD", "EP", "TP", "ES", "EST")
barplot(tableUSA, las=1, names.arg=names, main='Grados educativos en Estados Unidos', xlab = "Grados educativos", ylab = "Frecuencia relativa", col=c("skyblue","orange","red","beige","aliceblue","black","azure", "burlywood3", "cornflowerblue"),legend.text=c("Grado Asociado","Licenciatura", "Nunca Completé ninguna Educación formal", "Maestría", "Otro Doctorado", "Escuela Primaria", "Título Profesional", "Escuela Secundaria", "Estudios Superiores sin obtener un Título"),xlim=c(0,16), ylim = c(0, 0.85))
tableLC <- table(DF_LC$EdLevel)
tableLC <- prop.table(tableLC)
tableLC
##
## Associate degree (A.A., A.S., etc.)
## 0.049760413
## Bachelor’s degree (B.A., B.S., B.Eng., etc.)
## 0.497604128
## I never completed any formal education
## 0.005528935
## Master’s degree (M.A., M.S., M.Eng., MBA, etc.)
## 0.102100995
## Other doctoral degree (Ph.D., Ed.D., etc.)
## 0.006634722
## Primary/elementary school
## 0.002948765
## Professional degree (JD, MD, etc.)
## 0.056026539
## Secondary school (e.g. American high school, German Realschule or Gymnasium, etc.)
## 0.049760413
## Some college/university study without earning a degree
## 0.229635090
barplot(tableLC, las=1, names.arg=names, main='Grados educativos en América Latina', xlab = "Grados educativos", ylab = "Frecuencia relativa", col=c("skyblue","orange","red","beige","aliceblue","black","azure", "burlywood3", "cornflowerblue"),legend.text=c("Grado Asociado","Licenciatura", "Nunca Completé ninguna Educación formal", "Maestría", "Otro Doctorado", "Escuela Primaria", "Título Profesional", "Escuela Secundaria", "Estudios Superiores sin obtener un Título"),xlim=c(0,16), ylim = c(0, 0.85))
Los gráficos de barras muestran que la mayoría de programadores tanto estadounidenses como latinoamericanos tienen licenciatura, si se compara, existe una mayor frecuencia relativa de programadores con licenciatura en Estados Unidos que en América Latina.
Por otro lado, en América Latina existe una mayor frecuencia relativa de programadores que no terminaron sus estudios universitarios en comparación con Estados Unidos.
tableEmpleoUSA <- table(DF_USA$Employment)
tableEmpleoUSA <- prop.table(tableEmpleoUSA)
tableEmpleoUSA
##
## Employed full-time
## 0.887417920
## Employed part-time
## 0.012815082
## Independent contractor, freelancer, or self-employed
## 0.063863588
## Not employed, and not looking for work
## 0.001694556
## Not employed, but looking for work
## 0.019699216
## Retired
## 0.002330015
## Student
## 0.012179623
namesEmpleo <- c("TC", "TP", "IA", "SEBT", "SEST", "R", "E")
barplot(tableEmpleoUSA, names.arg=namesEmpleo, las=2, main='Frecuencia relativa de el tipo de trabajo en Estados Unidos')
barplot(tableEmpleoUSA, las=1, names.arg=namesEmpleo, main='Empleos en Estados Unidos', xlab = "Tipo de empleo", ylab = "Frecuencia relativa", col=c("skyblue","orange","red","beige","aliceblue","black","blue"),legend.text=c("Tiempo Completo","Tiempo Parcial", "Independiente, Autónomo", "Sin Empleo, Buscando Trabajo", "Sin Empleo, Sin buscar Trabajo", "Retirado", "Estudiante"),xlim=c(0,8), ylim = c(0, 0.9))
tableEmpleoLC <- table(DF_LC$Employment)
tableEmpleoLC <- prop.table(tableEmpleoLC)
tableEmpleoLC
##
## Employed full-time
## 0.7955071027
## Employed part-time
## 0.0419557317
## Independent contractor, freelancer, or self-employed
## 0.1179385530
## Not employed, and not looking for work
## 0.0016518005
## Not employed, but looking for work
## 0.0290716881
## Retired
## 0.0003303601
## Student
## 0.0135447638
barplot(tableEmpleoLC, las=1, names.arg=namesEmpleo, main='Empleos en América Latina', xlab = "Tipo de empleo", ylab = "Frecuencia relativa", col=c("skyblue","orange","red","beige","aliceblue","black","blue"),legend.text=c("Tiempo Completo","Tiempo Parcial", "Independiente, Autónomo", "Sin Empleo, Buscando Trabajo", "Sin Empleo, Sin buscar Trabajo", "Retirado", "Estudiante"),xlim=c(0,8), ylim = c(0, 0.9))
Los gráficos de barras muestran que la mayoría de programadores tanto estadounidenses como latinoamericanos trabajan a tiempo completo, existe una mayor frecuencia relativa de programadores trabajando a tiempo completo en Estados Unidos que en América Latina..
También se puede observar que existe mayor frecuencia relativa de latinoamericanos trabajando a medio tiempo y de manera independiente que los estadounidenses.
temp = DF_USA$JobSat[!is.na(DF_USA$JobSat)]
satis_vector_USA <- vector()
satis_vector_LC <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
satis_vector_USA <- c(satis_vector_USA, sub_pal)
}
}
temp = DF_LC$JobSat[!is.na(DF_LC$JobSat)]
satis_vector <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
satis_vector_LC <- c(satis_vector_LC, sub_pal)
}
}
layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE), heights=c(7, 1))
par(mai=rep(0.6, 4))
temp = table(satis_vector_USA)
Very_satisfied <- round(temp[1]/length(satis_vector_USA)*100,2)
Slightly_satisfied <- round(temp[2]/length(satis_vector_USA)*100,2)
Neither_satisfied_nor_dissatisfied <- round(temp[3]/length(satis_vector_USA)*100,2)
Slightly_dissatisfied <- round(temp[4]/length(satis_vector_USA)*100,2)
Very_dissatisfied <- round(temp[5]/length(satis_vector_USA)*100,2)
pie(table(satis_vector_USA), main = "Estados Unidos", labels = c(paste(Very_satisfied, "%", sep = ""), paste(Slightly_satisfied, "%", sep = ""), paste(Neither_satisfied_nor_dissatisfied, "%", sep = ""), paste(Slightly_dissatisfied, "%", sep = ""), paste(Very_dissatisfied, "%", sep = "")), col = c("blue","orange","yellow", "green", "red"))
temp = table(satis_vector_LC)
Very_satisfied <- round(temp[1]/length(satis_vector_LC)*100,2)
Slightly_satisfied <- round(temp[2]/length(satis_vector_LC)*100,2)
Neither_satisfied_nor_dissatisfied <- round(temp[3]/length(satis_vector_LC)*100,2)
Slightly_dissatisfied <- round(temp[4]/length(satis_vector_LC)*100,2)
Very_dissatisfied <- round(temp[5]/length(satis_vector_LC)*100,2)
pie(table(satis_vector_LC), main = "América Latina", labels = c(paste(Very_satisfied, "%", sep = ""), paste(Slightly_satisfied, "%", sep = ""), paste(Neither_satisfied_nor_dissatisfied, "%", sep = ""), paste(Slightly_dissatisfied, "%", sep = ""), paste(Very_dissatisfied, "%", sep = "")), col = c("blue","orange","yellow", "green", "red"))
par(mai=c(0,0,0,0))
plot.new()
legend(x="center", ncol=2,legend=c("Muy satisfecho","Algo satisfecho","Ni satisfecho ni insatisfecho", "Algo insatisfecho", "Muy insatisfecho"),
fill=c("blue","orange","yellow", "green", "red"))
En la gráfica podemos ver que América Latina tiene un nivel de satisfación mayor con su trabajo que Estado Unidos. Así mismo, en Estados Unidos el 48.18% de los encuenstados estan insatisfechos con su empleo.
colorLC = c("darkblue")
colorUSA = c("skyblue")
empleados_LC <- table(DF_LC$OrgSize)
empleados_USA <- table(DF_USA$OrgSize)
ggplot(DF_LC, aes(x= OrgSize)) + geom_bar(fill = colorLC) + coord_flip() + labs(title = "Cantidad de empleados - America Latina", x="Rango de empleados", y = "Frecuencia")
ggplot(DF_USA, aes(x= OrgSize)) + geom_bar(fill = colorUSA) + coord_flip() + labs(title = "Cantidad de empleados- USA", x="Rango de empleados", y = "Frecuencia")
Según las gráficas de barras de Estados Unidos la mayoría de los encuestras labora en un entorno con 10000 o más empleados (frecuencia absoluta de 1915), asi mismo en América Latina la mayoría de encuestados labora en un entorno de 20 a 99 empleados.
horas_LC <- table(DF_LC$WorkWeekHrs)
horas_USA <- table(DF_USA$WorkWeekHrs)
mean(DF_LC$WorkWeekHrs, na.rm = TRUE)
## [1] 38.98959
mean(DF_USA$WorkWeekHrs, na.rm = TRUE)
## [1] 41.59934
color = c("darkblue", "skyblue")
y_LC_median <- mean(DF_LC$WorkWeekHrs, na.rm = TRUE)
y_USA_median <- mean(DF_USA$WorkWeekHrs, na.rm = TRUE)
x_general <- c("Latino America", "Estados Unidos")
y_general <- c(y_LC_median, y_USA_median)
barplot(y_general, main ="Media de horas de trabajo por semana", ylab = "Horas", xlab = "Región", col = color)
legend(x="center", ncol=2,legend=c("Latino America","Estados unidos"),
fill=c("darkblue","skyblue"))
Según la gráfica, la media de horas que trabajan los encuestados por semana en América Latina es de 39 horas y en Estados Unidos es de 41.60.
freq_lc<- ggplot(data = DF_LC) +
geom_bar(
mapping = aes(x = NEWOvertime, y=stat(count), fill=NEWOvertime),
show.legend = T,
position="dodge",
width = 1
) +
ggtitle ("Horas extra de trabajo en America Latina")+
theme (text = element_text(size=8),axis.text.x=element_blank())+
labs(y = "Cantidad de personas" , x="Frecuencia") +
scale_fill_discrete(labels = c("Nunca", "Rara vez: 1-2 días al año o menos", "Ocasionalmente: 1-2 días por trimestre pero menos que al mes","A veces: 1-2 días al mes pero menos de una semana","A menudo: 1-2 días por semana o más", "N.A")
)+
labs(fill='')
freq_lc
freq_lc<- ggplot(data = DF_USA) +
geom_bar(
mapping = aes(x = NEWOvertime, y=stat(count), fill=NEWOvertime),
show.legend = T,
position="dodge",
width = 1
) +
ggtitle ("Horas extra de trabajo en EEUU")+
theme (text = element_text(size=8),axis.text.x=element_blank())+
labs(y = "Cantidad de personas" , x="Frecuencia") +
scale_fill_discrete(labels = c("Nunca", "Rara vez: 1-2 días al año o menos", "Ocasionalmente: 1-2 días por trimestre pero menos que al mes","A veces: 1-2 días al mes pero menos de una semana","A menudo: 1-2 días por semana o más", "N.A")
)+
labs(fill='')
freq_lc
Como podemos observar,al igual que America Latina, en Estados Unidos la mayoria de trabajadores hacen horas extra de 1 a mas dias a la semana.
El numero de personas de America Latina que respondieron esta pregunta es 2468 de 3033. Procedemos a determinar que porcentaje del total de personas que respodieron esta pregunta.
summary(DF_LC$NEWOvertime=="Often: 1-2 days per week or more")
## Mode FALSE TRUE NA's
## logical 1825 643 564
x<-643*100/2468
round(x,2)
## [1] 26.05
Finalmente obtenemos que en America Latina el 26.05% de empleados trabaja horas extra a menudo(de 1 a mas dias a la semana).
dim(DF_USA)
## [1] 9454 15
sum(!is.na(DF_USA$NEWOvertime))
## [1] 8373
a2<-2468
summary(DF_USA$NEWOvertime=="Often: 1-2 days per week or more")
## Mode FALSE TRUE NA's
## logical 6630 1743 1081
El numero de personas de Estados Unidos que respondieron esta pregunta es 8375 de 9456. Procedemos a determinar que porcentaje del total de personas que respodieron esta pregunta
x2<-1744*100/8375
round(x2,2)
## [1] 20.82
Finalmente obtenemos que en Estados Unidos el 20.82% de programadores trabaja horas extra a menudo(de 1 a mas dias a la semana).
La diferencia con America Latina(5.23%), a pesar de ser minima, podría indicar que programadores de Estados Unidos estan en una mejor situación laboral (aunque no por mucho) en comparación con America Latina.
n<-
x_lc_s<-length(which(DF_LC$NEWOnboardGood=="Yes"))
x_lc_n<-length(which(DF_LC$NEWOnboardGood=="No"))
x_lc_m<-length(which(DF_LC$NEWOnboardGood=="Onboarding? What onboarding?"))
tot_x<-(sum(!is.na(DF_LC$NEWOnboardGood)))
x_lc_s<-round(x_lc_s*100/tot_x,2)
x_lc_n<-round(x_lc_n*100/tot_x,2)
x_lc_m<-round(x_lc_m*100/tot_x,2)
porc_lc<-c(x_lc_s,x_lc_n,x_lc_m)
x_lc_s<-length(which(DF_USA$NEWOnboardGood=="Yes"))
x_lc_n<-length(which(DF_USA$NEWOnboardGood=="No"))
x_lc_m<-length(which(DF_USA$NEWOnboardGood=="Onboarding? What onboarding?"))
tot_x<-(sum(!is.na(DF_USA$NEWOnboardGood)))
x_lc_s<-round(x_lc_s*100/tot_x,2)
x_lc_n<-round(x_lc_n*100/tot_x,2)
x_lc_m<-round(x_lc_m*100/tot_x,2)
porc_usa<-c(x_lc_s,x_lc_n,x_lc_m)
label<-paste(porc_lc,"%",sep=" ")
pie(porc_lc, labels = label, clockwise=TRUE, main="America Latina",col=color)
color<-c("yellow", "blue", "cadetblue")
legend("bottomleft",c("Si","No","No Se"),cex=0.8, fill=color)
label<-paste(porc_usa,"%",sep=" ")
pie(porc_usa, labels = label, clockwise=TRUE, main="Estados Unidos",col=color)
color<-c("yellow", "blue", "cadetblue")
legend("bottomleft",c("Si","No","No Se"),cex=0.8, fill=color)
ggplot(data = DF_MIX, mapping = aes(x = NEWOnboardGood, y =Age)) +
geom_boxplot()
## Warning: Removed 2740 rows containing non-finite values (stat_boxplot).
En general, tanto en America Latina como en Estados Unidos, las empresas tienen un buen proceso de incorporación(no todas), pero es ligeramente mejor en Estados Unidos.Los programadores mas jovenes en su mayoria respondieron a estas preguntas, debido a que suelen incorporarse a esa edad a las empresas o se encargan tambien de incorporar gente nueva.
n<-
x_lc_s<-length(which(DF_LC$JobSeek=="I am actively looking for a job"))
x_lc_n<-length(which(DF_LC$JobSeek=="I’m not actively looking, but I am open to new opportunities"))
x_lc_m<-length(which(DF_LC$JobSeek=="I am not interested in new job opportunities"))
tot_x<-(sum(!is.na(DF_LC$JobSeek)))
x_lc_s<-round(x_lc_s*100/tot_x,2)
x_lc_n<-round(x_lc_n*100/tot_x,2)
x_lc_m<-round(x_lc_m*100/tot_x,2)
porc_lc<-c(x_lc_s,x_lc_n,x_lc_m)
x_lc_s<-length(which(DF_USA$JobSeek=="I am actively looking for a job"))
x_lc_n<-length(which(DF_USA$JobSeek=="I’m not actively looking, but I am open to new opportunities"))
x_lc_m<-length(which(DF_USA$JobSeek=="I am not interested in new job opportunities"))
tot_x<-(sum(!is.na(DF_USA$JobSeek)))
x_lc_s<-round(x_lc_s*100/tot_x,2)
x_lc_n<-round(x_lc_n*100/tot_x,2)
x_lc_m<-round(x_lc_m*100/tot_x,2)
porc_usa<-c(x_lc_s,x_lc_n,x_lc_m)
label<-paste(porc_lc,"%",sep=" ")
pie(porc_lc, labels = label, clockwise=TRUE, main="America Latina",col=color)
color<-c("yellow", "blue", "cadetblue")
legend("bottomleft",c("Estoy buscando activamente un trabajo","No estoy buscando activamente, pero estoy abierto a nuevas oportunidades","No estoy interesado en nuevas oportunidades de trabajo"),cex=0.4, fill=color)
label<-paste(porc_usa,"%",sep=" ")
pie(porc_usa, labels = label, clockwise=TRUE, main="Estados Unidos",col=color)
color<-c("yellow", "blue", "cadetblue")
legend(x="bottom",c("Estoy buscando activamente un trabajo","No estoy buscando activamente, pero estoy abierto a nuevas oportunidades","No estoy interesado en nuevas oportunidades de trabajo"),cex=0.5, fill=color)
ggplot(data = DF_MIX) +
geom_point(mapping = aes(x = Age, y=YearsCode, color=JobSeek), position =
"jitter") +
theme (text = element_text(size=8),axis.text.y=element_blank())
## Warning: Removed 2740 rows containing missing values (geom_point).
facet_wrap(~ Region, nrow = 2)
## <ggproto object: Class FacetWrap, Facet, gg>
## compute_layout: function
## draw_back: function
## draw_front: function
## draw_labels: function
## draw_panels: function
## finish_data: function
## init_scales: function
## map_data: function
## params: list
## setup_data: function
## setup_params: function
## shrink: TRUE
## train_scales: function
## vars: function
## super: <ggproto object: Class FacetWrap, Facet, gg>
En base a estos graficos podemos concluir que en America Latina hay una mayor cantidad de Programadores que no estan buscando activamente, pero que estan disponibles ante alguna oportunidad. Lo mismo ocurre en Estados Unidos, pero el porcentaje es menor. Sin embargo en Estados Unidos hay gente que ya no esta interesada en nuevas oportunidades de trabajo, y se debe a que hay programadores con muchos años de experiencia y de edad, lo cual podemos comprobar gracias al segundo grafico. Esto puede significar que ya mantienen un trabajo estable o que ya estan retirados.
temp = DF_USA$LanguageWorkedWith[!is.na(DF_USA$LanguageWorkedWith)]
LWW_vec_USA <- vector() #LWW(languageWorkedWith)
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
LWW_vec_USA <- c(LWW_vec_USA, sub_pal)
}
}
temp = DF_LC$LanguageWorkedWith[!is.na(DF_LC$LanguageWorkedWith)]
LWW_vec_LC <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
LWW_vec_LC <- c(LWW_vec_LC, sub_pal)
}
}
#USA
tabla_LWW_USA <- table(LWW_vec_USA)
tabla_LWW_USA <- prop.table(tabla_LWW_USA)
tabla_LWW_USA
## LWW_vec_USA
## Assembly Bash/Shell/PowerShell C
## 0.009263176 0.088317401 0.031617460
## C# C++ Dart
## 0.069071991 0.037433381 0.004610439
## Go Haskell HTML/CSS
## 0.024151933 0.004145165 0.122218932
## Java JavaScript Julia
## 0.065265206 0.139053380 0.001924541
## Kotlin Objective-C Perl
## 0.012054818 0.009136283 0.008205736
## PHP Python R
## 0.033393960 0.088888419 0.009643854
## Ruby Rust Scala
## 0.021550630 0.013640978 0.009516961
## SQL Swift TypeScript
## 0.115260976 0.013429490 0.058455291
## VBA
## 0.009749598
barplot(tabla_LWW_USA, xlab = 'lenguajes de programación', ylab = 'frecuencias relativas', las=2, col=c("skyblue","orange","red","beige","aliceblue","aquamarine","azure","skyblue","orange","red","beige","aliceblue","aquamarine","azure","skyblue","orange","red","beige","aliceblue","aquamarine","azure","skyblue","orange","red","beige"))
#LC
tabla_LWW_LC <- table(LWW_vec_LC)
tabla_LWW_LC <- prop.table(tabla_LWW_LC)
tabla_LWW_LC
## LWW_vec_LC
## Assembly Bash/Shell/PowerShell C
## 0.008455751 0.048728054 0.031028305
## C# C++ Dart
## 0.066642780 0.031744894 0.012110355
## Go Haskell HTML/CSS
## 0.016194912 0.003654604 0.136008599
## Java JavaScript Julia
## 0.082264421 0.151701899 0.001719814
## Kotlin Objective-C Perl
## 0.015693300 0.007524185 0.003367968
## PHP Python R
## 0.063059835 0.069007524 0.008169115
## Ruby Rust Scala
## 0.020207811 0.004801147 0.006449301
## SQL Swift TypeScript
## 0.122823361 0.010677177 0.064851308
## VBA
## 0.013113579
barplot(tabla_LWW_LC, xlab = 'lenguajes de programación', ylab = 'frecuencias relativas', las=2, col=c("skyblue","orange","red","beige","aliceblue","aquamarine","azure","skyblue","orange","red","beige","aliceblue","aquamarine","azure","skyblue","orange","red","beige","aliceblue","aquamarine","azure","skyblue","orange","red","beige"))
Se destaca que entre los lenguajes más usados tanto en US como en LC son JavaScript, HTML/CSS,SQL. Es importante resaltar que en US hay un mayor uso de Python que en LC. ### Frecuencia de aprendizaje de un nuevo lenguaje
#usa
temp = DF_USA$NEWLearn[!is.na(DF_USA$NEWLearn)]
tabla_NEWLearn_USA = table(temp)
tabla_NEWLearn_USA = prop.table(tabla_NEWLearn_USA)
tabla_NEWLearn_USA
## temp
## Every few months Once a decade Once a year
## 0.3021228 0.0172117 0.4049340
## Once every few years
## 0.2757315
barplot(tabla_NEWLearn_USA, xlab = 'Tiempo de aprendizaje', ylab = 'Frecuencias Relativas', las=2, col=c("skyblue","orange","red","beige"))
#LC
temp2 = DF_LC$NEWLearn[!is.na(DF_LC$NEWLearn)]
tabla_NEWLearn_LC = table(temp2)
tabla_NEWLearn_LC = prop.table(tabla_NEWLearn_LC)
tabla_NEWLearn_LC
## temp2
## Every few months Once a decade Once a year
## 0.450413223 0.009767092 0.362133734
## Once every few years
## 0.177685950
barplot(tabla_NEWLearn_LC, xlab = 'Tiempo de aprendizaje', ylab = 'Frecuencias Relativas', las=2, col=c("skyblue","orange","red","beige"))
Se observa que en US la mayoría de programadores aprenden un nuevo lenguaje cada un año, seguido de pocos meses, mientras que en LC la mayoría aprenden un nuevo lenguaje cada pocos meses, seguido de un año. ### Plataformas con las que se trabajó
temp = DF_USA$PlatformWorkedWith[!is.na(DF_USA$PlatformWorkedWith)]
PWW_vec_USA <- vector() #PWW(PlataformWorkedWith)
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
PWW_vec_USA <- c(PWW_vec_USA, sub_pal)
}
}
temp = DF_LC$PlatformWorkedWith[!is.na(DF_LC$PlatformWorkedWith)]
PWW_vec_LC <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
PWW_vec_LC <- c(PWW_vec_LC, sub_pal)
}
}
#USA
tabla_PWW_USA <- table(PWW_vec_USA)
tabla_PWW_USA <- prop.table(tabla_PWW_USA)
tabla_PWW_USA
## PWW_vec_USA
## Android Arduino
## 0.047329898 0.020973512
## AWS Docker
## 0.111957200 0.120031510
## Google Cloud Platform Heroku
## 0.040437194 0.030360718
## IBM Cloud or Watson iOS
## 0.003873043 0.039386878
## Kubernetes Linux
## 0.044605639 0.153608823
## MacOS Microsoft Azure
## 0.096694785 0.052548659
## Raspberry Pi Slack Apps and Integrations
## 0.046476516 0.028916533
## Windows WordPress
## 0.131749106 0.031049989
barplot(tabla_PWW_USA, xlab = 'Plataformas', ylab = 'frecuencias relativas', las=2, col=c("skyblue","orange","red","beige","aliceblue","aquamarine","azure","skyblue","orange","red","beige","aliceblue","aquamarine","azure","skyblue","orange","red"))
#LC
tabla_PWW_LC <- table(PWW_vec_LC)
tabla_PWW_LC <- prop.table(tabla_PWW_LC)
tabla_PWW_LC
## PWW_vec_LC
## Android Arduino
## 0.087704305 0.029270377
## AWS Docker
## 0.091977353 0.114944985
## Google Cloud Platform Heroku
## 0.051062921 0.047110351
## IBM Cloud or Watson iOS
## 0.006409572 0.037602820
## Kubernetes Linux
## 0.031193249 0.163444076
## MacOS Microsoft Azure
## 0.067727807 0.042089520
## Raspberry Pi Slack Apps and Integrations
## 0.027988463 0.022647153
## Windows WordPress
## 0.136630702 0.042196347
barplot(tabla_PWW_LC, xlab = 'Plataformas', ylab = 'frecuencias relativas', las=2, col=c("skyblue","orange","red","beige","aliceblue","aquamarine","azure","skyblue","orange","red","beige","aliceblue","aquamarine","azure","skyblue","orange","red"))
Se observa que en tanto en USA como en LC la plataforma más usada es Linux, no obstante, en general, hay un uso distribudio en cuanto la plataforma en los disitntos sistemas operativos.